Labour market


Labour force
ARXSTK2_raw <- 
  statgl_url("ARXSTK2", lang = language) |> 
  statgl_fetch(
    aar       = px_top(),
    udd_grp   = c("AA", "10", "20", "30", "40", "50"),
    opg_var   = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXSTK2 <-
  ARXSTK2_raw %>% 
  mutate(
    udd_grp = udd_grp %>% factor(levels = unique(udd_grp)),
    opg_var = opg_var %>% fct_rev()
  ) %>% 
  spread(udd_grp, value)


ARXSTK2 %>% 
  select(-aar) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXSTK2[["aar"]] %>% table()) |> 
  row_spec(1, bold = T)
Total Primary Upper secondary education - General Upper secondary education - Vocational: Total Post-secondary non-tertiary education Bachelors, Masters, Doctoral or equivalent level
2023
Unemployment in average per month 857 712 18 98 12 18
Total population 37.072 20.027 2.208 8.263 1.409 5.165
Persons not in the labour force in average per month 8.023 5.922 575 1.042 176 308
Labour force in average per month 29.049 14.105 1.633 7.221 1.233 4.857
Employment in average per month 28.192 13.393 1.615 7.123 1.222 4.840


See the table in our Statbank: ARXSTK2

Jobseekers


ARXLED2_raw <- 
  statgl_url("ARXLED2", lang = language) %>%
  statgl_fetch(
    aar       = px_top(2),
    md        = px_all(),
    koen      = 3,
    type_k    = "A",
    alderskat = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXLED2 <- 
  ARXLED2_raw %>% 
  filter(aar <= Sys.time() %>% year() - 1) %>% 
  mutate(
    alderskat = alderskat %>% factor(levels = unique(alderskat)),
    md = md %>% factor(levels = unique(md))
  ) %>% 
  spread(md, value) %>% 
  unite(combi, type_k, koen, sep = ", ")

ARXLED2 %>% 
  select(-c(aar, combi)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXLED2[["aar"]] %>% table())
January February March April May June July August September October November December
2024
18-19 86 78 73 67 68 68 69 54 43 60 70 96
20-24 200 193 184 200 173 150 137 126 115 142 178 207
25-29 200 181 182 185 169 157 158 145 126 146 179 220
30-34 219 189 184 203 187 170 157 160 126 153 176 217
35-39 193 160 171 175 147 132 115 131 109 131 147 187
40-44 173 148 139 147 146 121 114 110 114 137 153 160
45-49 123 104 95 115 101 95 84 85 77 96 107 120
50-54 160 113 123 131 116 99 98 92 90 107 125 147
55-59 261 209 189 214 192 164 154 134 138 166 210 240
60+ 208 147 150 166 176 158 144 141 133 175 209 219


See the table in our Statbank: ARXLED2

ARXLEDVAR_raw <- 
  statgl_url("ARXLEDVAR", lang = language) %>% 
  statgl_fetch(
    koen      = 0,
    Alderskat = "A",
    opg_var   = px_all(),
    taar_kvar = px_top(1),
    kvar_led  = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXLEDVAR <- 
  ARXLEDVAR_raw %>% 
  unite(combi, Alderskat, koen, sep = ", ") %>% 
  mutate(
    kvar_led = kvar_led %>% fct_inorder(),
    opg_var = opg_var %>% fct_inorder()
  ) %>% 
  spread(opg_var, value)

ARXLEDVAR %>% 
  select(-c(combi, taar_kvar)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXLEDVAR[["taar_kvar"]] %>% table()) %>% 
  row_spec(1, bold = TRUE)
Number of persons Percentage
2025Q1
Total 4.616 100,0
1-3 months 2.597 56,3
4-6 months 1.112 24,1
7-9 months 475 10,3
10-12 months 432 9,4


See the table in our Statbank: ARXSTK1

Employment
url <- paste0("https://bank.stat.gl/api/v1/", language, "/Greenland/AR/AR30/ARXBFB01.px")

ARXBFB1_raw <- 
  #url |> 
  statgl_url("ARXBFB01", lang = language) |> 
  statgl_fetch(
    aar       = px_top(),
    beskbrch  = px_all(),
    sex       = "A",
    opg_var   = "G",
    bybygd    = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXBFB1 <- 
  ARXBFB1_raw %>% 
  arrange(-value) %>% 
  mutate(
    beskbrch = beskbrch %>% fct_inorder(),
    bybygd = bybygd %>% fct_inorder()
  ) %>% 
  spread(bybygd, value) %>% 
  unite(combi, opg_var, aar, sep = ", ")

ARXBFB1 %>% 
  select(-c(combi, sex)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXBFB1[["combi"]] %>% table()) %>% 
  row_spec(1, bold = TRUE) 
Total Towns Settlements etc.
Number of main employed persons in average per month, 2023
All industries 29.339 25.874 3.465
Public administration and service 12.730 11.487 1.243
Social protection (COFOG 10) 5.089 4.651 437
Fishing and other related industries 4.517 3.281 1.237
Wholesale and retail trade 3.055 2.701 354
Family and children (COFOG 10.40) 2.519 2.290 229
Education (COFOG 9) 2.479 2.173 307
Construction 2.239 2.185 54
Transportation and storage 2.087 1.859 228
Primary education (COFOG 9.10) 1.559 1.262 297
Social protection (COFOG 10.x) 1.317 1.259 58
Health (COFOG 7) 1.302 1.222 80
General public services (COFOG 1) 1.270 1.135 135
Old age (COFOG 10.20) 1.253 1.102 150
Accommodation and food service activities 903 847 56
Unknown 822 748 74
Other (COFOG x) 750 701 49
Youth-level education (COFOG 9.20) 629 622 7
Economic affairs (COFOG 4) 619 501 118
Information and communication 555 550 5
Public order and safety (COFOG 3) 521 497 24
Administrative and support service activities 449 385 65
Energy and watersupply 424 327 97
Recreation, culture and religion (COFOG 8) 359 308 51
Other service industries 330 325 4
Real estate activities 325 320 5
Professional, scientific and technical activities 298 296 2
Education other (COFOG 9.x) 291 289 3
Environmental protection (COFOG 5) 264 226 39
Manufacturing 231 226 5
Financial and insurance activities 208 207 0
Mining and quarrying 85 79 6
Agriculture, forestry and related industries 83 53 31
Defence (COFOG 2) 48 45 3
Housing and community amenities (COFOG 6) 29 29 NA


See the table in our Statbank: ARXBFB01

Unemployment
url <- paste0("https://bank.stat.gl/api/v1/", language, "/Greenland/AR/AR40/ARXLED6.px")

ARXLED6_raw <- 
  statgl_url("ARXLED6", lang = language) |> 
  statgl_fetch(
    aar       = px_top(5),
    udd_grp   = px_all(),
    opg_var   = "P",
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXLED6_raw %>% 
  mutate(
    udd_grp = udd_grp %>% fct_inorder(),
    aar = aar %>% fct_inorder()
  ) %>% 
  spread(aar, value) %>%
  select(-opg_var) |> 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  row_spec(1, bold = TRUE) |> 
  add_footnote(ARXLED6_raw[[3]][1], notation = "symbol")
2019 2020 2021 2022 2023
Total 4,3 4,5 3,7 3,2 2,9
Primary 7,1 7,5 6,2 5,5 5,0
Upper secondary education - General 1,4 1,4 0,9 0,9 1,1
Upper secondary education - Vocational: Total 2,1 2,3 1,8 1,5 1,4
Upper secondary education - Vocational: Arts and humanities 2,6 3,4 2,8 2,0 0,7
Upper secondary education - Vocational: Business, administration and law 0,9 1,5 1,3 0,9 0,5
Upper secondary education - Vocational: Engineering, manufacturing and construction 1,8 1,9 1,6 1,6 1,4
Upper secondary education - Vocational: Agriculture, forestry, fisheries and veterinary 6,1 6,5 5,2 4,0 3,4
Upper secondary education - Vocational: Health and welfare 1,6 1,7 1,4 1,1 1,1
Upper secondary education - Vocational: Services 3,0 3,2 2,1 1,8 1,9
Upper secondary education - Vocational: Other 1,2 1,5 0,7 0,3 0,5
Post-secondary non-tertiary education 1,7 1,9 1,3 1,2 0,9
Bachelors, Masters, Doctoral or equivalent level 0,4 0,4 0,3 0,4 0,4
* Unemployment rate (pct.)


See the table in our Statbank: ARXLED7


Last updated: 22. juni 2025
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQoNCmxhbmd1YWdlICA8LSBwYXJhbXMkbGFuZw0Kb3B0aW9uICAgIDwtIHBhc3RlMCgiP2xhbmc9IiwgbGFuZ3VhZ2UsICImc2VsZWN0IikNCmxvZ28gICAgICA8LSBwYXN0ZTAoZ2V0d2QoKSwiL2FkZC9sb2dvLmdpZiIpDQp0eHQgICAgICAgPC0gcmVhZF95YW1sKHBhc3RlMChnZXR3ZCgpLCAiL2FkZC90eHQueW1sIiksIGZpbGVFbmNvZGluZyA9ICJJU08tODg1OS0xIikNCnNvdXJjZSAgICA8LSB0eHQkc291cmNlW2xhbmd1YWdlXSAlPiUgdW5saXN0KCkNCg0KeGFyaW5nYW5FeHRyYTo6dXNlX2NsaXBib2FyZCgpDQoNCmBgYA0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQoNCi5hY2NvcmRpb24gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTE5OTAwOw0KICBjb2xvcjogd2hpdGU7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgcGFkZGluZzogMThweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJvcmRlcjogbm9uZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICBvdXRsaW5lOiBub25lOw0KICBmb250LXNpemU6IDE1cHg7DQogIHRyYW5zaXRpb246IDAuNHM7DQp9DQoNCi5hY3RpdmUsIC5hY2NvcmRpb246aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjk3MjQyOw0KfQ0KDQouYWNjb3JkaW9uOmFmdGVyIHsNCiAgY29udGVudDogJ1wwMDJCJzsNCiAgY29sb3I6ICM3Nzc7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmbG9hdDogcmlnaHQ7DQogIG1hcmdpbi1sZWZ0OiA1cHg7DQp9DQoNCi5hY3RpdmU6YWZ0ZXIgew0KICBjb250ZW50OiAiXDIyMTIiOw0KfQ0KDQoucGFuZWwgew0KICBwYWRkaW5nOiAwcHggNXB4IDBweCA1cHg7DQogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KICBtYXgtaGVpZ2h0OiAwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZS1vdXQ7DQp9DQoNCmRldGFpbHMgew0KICB3aWR0aDogMTAwJTsNCn0NCg0KZGV0YWlscyA+IHN1bW1hcnkgew0KICBwYWRkaW5nOiA0cHggMTJweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMDdmOTk7DQogIGJvcmRlcjogc29saWQ7DQogIGJvcmRlci1jb2xvcjogd2hpdGU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBmb250LXNpemU6IDE1cHg7DQogIGNvbG9yOiB3aGl0ZTsNCn0NCg0KZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnkgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFhNDFhOw0KfQ0KDQoNCi50aXRsZSB7DQogIGNvbG9yOiAjMWI1NDYzOw0KICBmb250LXNpemU6IDM2cHg7DQp9DQoNCg0KLnBlcnNvbmVyIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDQ0NTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLsO4a29ub21pIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDdGOTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDFweDsNCiAgcGFkZGluZy1ib3R0b206IDAuMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLnR2w6ZyZ8OlZW5kZSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjZmFhNDFhOw0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi5jb250YWluZXIgew0KICB3aWR0aDogaW5oZXJpdDsNCn0NCg0KLnNjcm9sbC0xMDAgew0KICBtYXgtaGVpZ2h0OiAxMDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQogIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7DQp9DQoNCg0KcHJlIHsNCiAgbWF4LWhlaWdodDogMzAwcHg7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCnByZVtjbGFzc10gew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCn0NCg0KYGBgDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkQVIkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkQVIkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJBUlhTVEsyIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgQVJYU1RLMn0NCg0KQVJYU1RLMl9yYXcgPC0gDQogIHN0YXRnbF91cmwoIkFSWFNUSzIiLCBsYW5nID0gbGFuZ3VhZ2UpIHw+IA0KICBzdGF0Z2xfZmV0Y2goDQogICAgYWFyICAgICAgID0gcHhfdG9wKCksDQogICAgdWRkX2dycCAgID0gYygiQUEiLCAiMTAiLCAiMjAiLCAiMzAiLCAiNDAiLCAiNTAiKSwNCiAgICBvcGdfdmFyICAgPSBweF9hbGwoKSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQpBUlhTVEsyIDwtDQogIEFSWFNUSzJfcmF3ICU+JSANCiAgbXV0YXRlKA0KICAgIHVkZF9ncnAgPSB1ZGRfZ3JwICU+JSBmYWN0b3IobGV2ZWxzID0gdW5pcXVlKHVkZF9ncnApKSwNCiAgICBvcGdfdmFyID0gb3BnX3ZhciAlPiUgZmN0X3JldigpDQogICkgJT4lIA0KICBzcHJlYWQodWRkX2dycCwgdmFsdWUpDQoNCg0KQVJYU1RLMiAlPiUgDQogIHNlbGVjdCgtYWFyKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gQVJYU1RLMltbImFhciJdXSAlPiUgdGFibGUoKSkgfD4gDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIkFSWFNUSzIiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2MzOWRiNmIyLTkzY2QtNDY2OS04ZmFkLWRhZDE2ZDhhMGVhMSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JEFSJHN1YjJbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+DQo8YnI+DQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAyOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIkFSWExFRDIiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBBUlhMRUQyfQ0KDQpBUlhMRUQyX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiQVJYTEVEMiIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lDQogIHN0YXRnbF9mZXRjaCgNCiAgICBhYXIgICAgICAgPSBweF90b3AoMiksDQogICAgbWQgICAgICAgID0gcHhfYWxsKCksDQogICAga29lbiAgICAgID0gMywNCiAgICB0eXBlX2sgICAgPSAiQSIsDQogICAgYWxkZXJza2F0ID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KQVJYTEVEMiA8LSANCiAgQVJYTEVEMl9yYXcgJT4lIA0KICBmaWx0ZXIoYWFyIDw9IFN5cy50aW1lKCkgJT4lIHllYXIoKSAtIDEpICU+JSANCiAgbXV0YXRlKA0KICAgIGFsZGVyc2thdCA9IGFsZGVyc2thdCAlPiUgZmFjdG9yKGxldmVscyA9IHVuaXF1ZShhbGRlcnNrYXQpKSwNCiAgICBtZCA9IG1kICU+JSBmYWN0b3IobGV2ZWxzID0gdW5pcXVlKG1kKSkNCiAgKSAlPiUgDQogIHNwcmVhZChtZCwgdmFsdWUpICU+JSANCiAgdW5pdGUoY29tYmksIHR5cGVfaywga29lbiwgc2VwID0gIiwgIikNCg0KQVJYTEVEMiAlPiUgDQogIHNlbGVjdCgtYyhhYXIsIGNvbWJpKSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IEFSWExFRDJbWyJhYXIiXV0gJT4lIHRhYmxlKCkpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiQVJYTEVEMiIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvOGRjMmMyMWQtODNjMy00NjlmLWE3YTEtOWVhYTNmOWUxOTkxIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMzogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJBUlhMRURWQVIiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBBUlhMRURWQVJ9DQoNCkFSWExFRFZBUl9yYXcgPC0gDQogIHN0YXRnbF91cmwoIkFSWExFRFZBUiIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAga29lbiAgICAgID0gMCwNCiAgICBBbGRlcnNrYXQgPSAiQSIsDQogICAgb3BnX3ZhciAgID0gcHhfYWxsKCksDQogICAgdGFhcl9rdmFyID0gcHhfdG9wKDEpLA0KICAgIGt2YXJfbGVkICA9IHB4X2FsbCgpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCkFSWExFRFZBUiA8LSANCiAgQVJYTEVEVkFSX3JhdyAlPiUgDQogIHVuaXRlKGNvbWJpLCBBbGRlcnNrYXQsIGtvZW4sIHNlcCA9ICIsICIpICU+JSANCiAgbXV0YXRlKA0KICAgIGt2YXJfbGVkID0ga3Zhcl9sZWQgJT4lIGZjdF9pbm9yZGVyKCksDQogICAgb3BnX3ZhciA9IG9wZ192YXIgJT4lIGZjdF9pbm9yZGVyKCkNCiAgKSAlPiUgDQogIHNwcmVhZChvcGdfdmFyLCB2YWx1ZSkNCg0KQVJYTEVEVkFSICU+JSANCiAgc2VsZWN0KC1jKGNvbWJpLCB0YWFyX2t2YXIpKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gQVJYTEVEVkFSW1sidGFhcl9rdmFyIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKQ0KDQoNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIkFSWFNUSzEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzc1MjQ0YTQ5LWZjMjktNGNiYS05NDFhLTkwZWU0NjYzYWM0NyIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JEFSJHN1YjNbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+IA0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgJypUYWJlbCA0Oioge3N0YXRnbF9tZXRhKGdsdWU6OmdsdWUoImh0dHBzOi8vYmFuay5zdGF0LmdsL2FwaS92MS97bGFuZ3VhZ2V9L0dyZWVubGFuZC9BUi9BUjMwL0FSWEJGQjAxLnB4IikpIHw+IHBsdWNrKCJ0aXRsZSIpfScgfD4gZ2x1ZTo6Z2x1ZSgpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgQVJYQkZCMDF9DQoNCnVybCA8LSBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsL2FwaS92MS8iLCBsYW5ndWFnZSwgIi9HcmVlbmxhbmQvQVIvQVIzMC9BUlhCRkIwMS5weCIpDQoNCkFSWEJGQjFfcmF3IDwtIA0KICAjdXJsIHw+IA0KICBzdGF0Z2xfdXJsKCJBUlhCRkIwMSIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBhYXIgICAgICAgPSBweF90b3AoKSwNCiAgICBiZXNrYnJjaCAgPSBweF9hbGwoKSwNCiAgICBzZXggICAgICAgPSAiQSIsDQogICAgb3BnX3ZhciAgID0gIkciLA0KICAgIGJ5YnlnZCAgICA9IHB4X2FsbCgpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCkFSWEJGQjEgPC0gDQogIEFSWEJGQjFfcmF3ICU+JSANCiAgYXJyYW5nZSgtdmFsdWUpICU+JSANCiAgbXV0YXRlKA0KICAgIGJlc2ticmNoID0gYmVza2JyY2ggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgYnlieWdkID0gYnlieWdkICU+JSBmY3RfaW5vcmRlcigpDQogICkgJT4lIA0KICBzcHJlYWQoYnlieWdkLCB2YWx1ZSkgJT4lIA0KICB1bml0ZShjb21iaSwgb3BnX3ZhciwgYWFyLCBzZXAgPSAiLCAiKQ0KDQpBUlhCRkIxICU+JSANCiAgc2VsZWN0KC1jKGNvbWJpLCBzZXgpKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gQVJYQkZCMVtbImNvbWJpIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSANCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJBUlhCRkIwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMDFhZjU5MzQtZTlhYi00ZTcxLTkwZWEtNWYwODBjMTRiYWMyIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4gDQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JEFSJHN1YjRbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+DQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJBUlhMRUQ2IiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgQVJYTEVENn0NCg0KdXJsIDwtIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2wvYXBpL3YxLyIsIGxhbmd1YWdlLCAiL0dyZWVubGFuZC9BUi9BUjQwL0FSWExFRDYucHgiKQ0KDQpBUlhMRUQ2X3JhdyA8LSANCiAgc3RhdGdsX3VybCgiQVJYTEVENiIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBhYXIgICAgICAgPSBweF90b3AoNSksDQogICAgdWRkX2dycCAgID0gcHhfYWxsKCksDQogICAgb3BnX3ZhciAgID0gIlAiLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCkFSWExFRDZfcmF3ICU+JSANCiAgbXV0YXRlKA0KICAgIHVkZF9ncnAgPSB1ZGRfZ3JwICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGFhciA9IGFhciAlPiUgZmN0X2lub3JkZXIoKQ0KICApICU+JSANCiAgc3ByZWFkKGFhciwgdmFsdWUpICU+JQ0KICBzZWxlY3QoLW9wZ192YXIpIHw+IA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSB8PiANCiAgYWRkX2Zvb3Rub3RlKEFSWExFRDZfcmF3W1szXV1bMV0sIG5vdGF0aW9uID0gInN5bWJvbCIpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiQVJYTEVENyIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvZmNhOWEzMjYtZDYwZS00OWE3LTgwY2EtZGI0MWUxNzdiZGUyIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4gDQoNCg0KDQo8aHIgc3R5bGU9ImJvcmRlcjoxcHggcmlkZ2UgbGlnaHRncmF5Ij4gPC9ocj4NCjxjZW50ZXI+IDxzcGFuIHN0eWxlPSdjb2xvcjojRDNEM0QzOyBmb250LXNpemU6OTAlOyc+IGByIHBhc3RlKHR4dCR1cGRhdGVbbGFuZ3VhZ2VdLCBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLiAlQiAlWSIpKWAgPC9zcGFuPiA8L2NlbnRlcj4NCg0KDQoNCg0KPHNjcmlwdD4NCnZhciBhY2MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhY2NvcmRpb24iKTsNCnZhciBpOw0KDQpmb3IgKGkgPSAwOyBpIDwgYWNjLmxlbmd0aDsgaSsrKSB7DQogIGFjY1tpXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgew0KICAgIHRoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7DQogICAgdmFyIHBhbmVsID0gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmc7DQogICAgaWYgKHBhbmVsLnN0eWxlLm1heEhlaWdodCkgew0KICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsNCiAgICB9IGVsc2Ugew0KICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gcGFuZWwuc2Nyb2xsSGVpZ2h0ICsgInB4IjsNCiAgICB9IA0KICB9KTsNCn0NCjwvc2NyaXB0Pg0KDQoNCg==